home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d1 / eddtv4.arc / CMOSCHKS.ASM next >
Assembly Source File  |  1988-03-28  |  4KB  |  96 lines

  1.          .286                     ; ENABLE 80286 OP CODES
  2.          .XLIST
  3.          PAGE  80,120
  4.          PAGE
  5.          TITLE èÄ CMOSCHKS - CONFIGURATION MEMORY (CMOS) CHECKSUMö
  6.          .LIST
  7.         SUBTTL ROUTINE TO CLACULATE CONFIGURATION (CMOS) MEMORY CHECKSUM
  8.          COMMENT *
  9.  
  10.          CMOSCHKS - VERSION 1.00
  11.  
  12.          Copyright 1987,1988 Don Gentry
  13.  
  14.          A limited license is granted to all users of this program,
  15.          to make copies of this program, and distribute them to
  16.          other users, on the following conditions:
  17.  
  18.          1. The notice on this page is not to be removed or altered
  19.  
  20.          2. No fee is to be charged for copying or distributing
  21.             the program.
  22.  
  23.          3. No warranty of any kind is offered. This program is offered
  24.             on an "AS IS" basis. Each user should verify that it meets
  25.             his needs and verify correct operation.
  26.  
  27.          4. No further restrictions on redristribution of any kind may
  28.             be required. This includes, but is not limited to,
  29.             COMPUSERVE or other program distribution services,
  30.             by electronic or other means.
  31.  
  32.          FOR HELP OR SUGGESTIONS WRITE:
  33.  
  34.          DON GENTRY
  35.          183 BELLEGROVE CIRCLE
  36.          BRANDON, MS  39042
  37.  
  38.          OR CALL (601) 992-0577
  39.                                                                 *
  40.          PAGE
  41. ;-----------------------------------------------------------------------
  42. ;
  43. ;        PROCEDURE CMOSCHKS
  44. ;
  45. ;        PURPOSE:
  46. ;              CALCULATE A CHECKSUM FOR CONFIGURAATION (CMOS) MEMORY
  47. ;
  48. ;        PARAMETERS:
  49. ;              DS:DX - POINTER TO A 32 BYTE AREA TO CONTAINING
  50. ;                      THE CONTENTS OF CMOS MEMORY BYTES
  51. ;                      10 - 2F
  52. ;
  53. ;        OUTPUT:
  54. ;              THE CHECKSUM BYTES (2E-2F) ARE UPDATED TO REFLECT
  55. ;              THE DATA IN YHE CMOS MEMORY AREA
  56. ;
  57. ;-----------------------------------------------------------------------
  58.          PUBLIC CMOSCHKS          ; TELL THE LINKER ABOUT US
  59. ;
  60. ; -----  EQUATES FOR EASE OF CODING
  61. ;
  62. ;
  63. CMC_CODE SEGMENT PUBLIC 'CODE'    ; IDENTIFY THE CODE SEGMENT
  64.          ASSUME CS:CMC_CODE       ; INFORM THE ASSEMBLER
  65. CMOSCHKS PROC  FAR                ; IDENTIFY THE PROCEDURE
  66.          JMP   CMC_GO             ; JUMP OVER MODULE ID
  67.          DB    8                  ; LENGTH OF ID
  68.          DB    'CMOSCHKS'         ; MODULE EYE-CATCHER
  69.          DB    'V1M0'             ; VERSION & MOD LEVEL
  70.          DB    'Copyright 1987,1988 Don Gentry'
  71. CMC_GO:                           ; BEGIN ACTUAL LOGIC
  72.          PUSHA                    ; SAVE GENERAL REGS
  73.          MOV   CX,02DH            ; GET END OF CHKSUM AREA
  74.          MOV   AX,0               ; CLEAR CHKSUM ACCUMULATOR
  75.          MOV   BX,DX              ; GET BASE TO CMOS DATA AREA
  76.          MOV   SI,00H             ; ZERO OUR INDEX
  77. CMC_LOOP:                         ; CHKSUM CLACULATION LOOP
  78.          MOV   DX,00H             ; ZERO DX FOR WORK REG
  79.          MOV   DL,DS:[BX+SI]      ; GET A BYTE
  80.          ADD   AX,DX              ; ADD IT TO THE CHKSUM
  81.          CMP   CX,010H            ; ALL BYTES DONE ?
  82.          JE    CMC_SAVE           ; ...YES - EXIT LOOP
  83.          INC   SI                 ; ADD TO THE INDEX FOR NEXT BYTE
  84.          LOOP  CMC_LOOP           ; ...NO - LOOP 'TIL DONE
  85. CMC_SAVE:                         ; SAVE THE CHKSUM
  86.          MOV   DS:01EH[BX],AH     ; SAVE LOW BYTE
  87.          MOV   DS:01FH[BX],AL     ; SAVE HIGH BYTE
  88.          POPA                     ; RESTORE REGISTERS
  89. ;
  90. ; -----  RETURN TO CALLER
  91. ;
  92.          RET                      ; RETURN
  93. CMOSCHKS ENDP                     ; END OF PROCEDURE
  94. CMC_CODE ENDS                     ; END OF SEGMENT
  95.          END
  96.